Factory Pattern creating a ‘screen builder’

Factory Pattern Assignment
Overview
You will be creating a ‘screen builder’ with a gui interface. The user will be able to add components to the screen they are building and set the attributes of those components as they build the screen. Importantly, the user can choose one of at least 2 output languages for their screen, and export it in the format of their choice. For example, the user could export their screen in XAML (for UWP), or as an HTML file, without having to change components or attributes.
Requirements
Demonstrate your understanding of the abstract factory pattern by:
Create a rudimentary ‘screen builder’ in the desktop platform of your choice.
The ‘screen builder’ may display the components added by the user graphically (more challenging) or in a control such as a list box (easier).
Required component attributes to be specified by the user as she builds her application are content (text), height, width, top, and left attributes.
The user can remove components in the order she added them. No need to edit or randomly remove.
Build your ‘screen builder’ so it can support N output languages, including one desktop platform (whatever you are using for the rest of your gui, such as UWP/WPF/Swing/JavaFX) and HTML. See me for approval if you’d like to support something other than these two domains.
The user will be able to select the target output language, then build the screen.
(Extra Credit: 10pts) When the screen is built, it opens as a new window or in a new application (default web browser) to confirm that the screen built correctly.
Factory Pattern Requirements
The ‘screen builder’ gui must not know anything about the target output language or its elements.
To put it another way, the ‘screen builder’ must be able to run and work with new client implementations and components _without_ any changes to its code.
The factory code will contain the implementations for the N supported languages
You must support at least 2 components (which could be text block, button, etc), and each component must be supported in each language.